#ifndef SEMANTICNODEBLOCKMODELINSTANCE_H_
#define SEMANTICNODEBLOCKMODELINSTANCE_H_

#include "SemanticNode.h"
#include "LabeledNode.h"
#include <string>
#include <vector>

class SemanticNodeExpression;

class SemanticNodeBlockModelInstance : public SemanticNode, public LabeledNode {
private:
	std::string name;
	std::vector<SemanticNodeExpression *> parameters;

	friend std::string flattenNamePeriodAdd(const SyntaxTreeNode &nameNode);

public:
	SemanticNodeBlockModelInstance(const SyntaxTreeNode *modelInstanceNodeParent, SemanticNode *parent);

	std::string getName();

	void addParameters(std::vector<SemanticNodeExpression *> params);
	void addParameter(SemanticNodeExpression *parameter);

	virtual std::string toDebugString(int tab);
};

#endif /* SEMANTICNODEBLOCKMODELINSTANCE_H_ */